home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Interfaces&Libraries / Universal / Interfaces / PInterfaces / TextUtils.p < prev    next >
Encoding:
Text File  |  1998-08-17  |  8.3 KB  |  260 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        TextUtils.p
  3.  
  4.      Contains:    Text Utilities Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5+
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1985-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. }
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT TextUtils;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __TEXTUTILS__}
  27. {$SETC __TEXTUTILS__ := 1}
  28.  
  29. {$I+}
  30. {$SETC TextUtilsIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33. {$IFC UNDEFINED __MACTYPES__}
  34. {$I MacTypes.p}
  35. {$ENDC}
  36. {$IFC UNDEFINED __NUMBERFORMATTING__}
  37. {$I NumberFormatting.p}
  38. {$ENDC}
  39. {$IFC UNDEFINED __STRINGCOMPARE__}
  40. {$I StringCompare.p}
  41. {$ENDC}
  42. {$IFC UNDEFINED __DATETIMEUTILS__}
  43. {$I DateTimeUtils.p}
  44. {$ENDC}
  45.  
  46.  
  47. {$PUSH}
  48. {$ALIGN MAC68K}
  49. {$LibExport+}
  50.  
  51. {
  52.  
  53.     Here are the current System 7 routine names and the translations to the older forms.
  54.     Please use the newer forms in all new code and migrate the older names out of existing
  55.     code as maintainance permits.
  56.     
  57.     NEW NAME                    OLD NAMEs                    OBSOLETE FORM (no script code)
  58.  
  59.     FindScriptRun
  60.     FindWordBreaks                                            NFindWord, FindWord
  61.     GetIndString            
  62.     GetString
  63.     Munger
  64.     NewString                
  65.     SetString                
  66.     StyledLineBreak
  67.     TruncString
  68.     TruncText
  69.  
  70.     UpperString ($A054)            UprString, UprText
  71.     UppercaseText                SCUpperText (a only)        UpperText ($A456)
  72.     LowercaseText                                            LwrString, LowerText, LwrText ($A056)
  73.     StripDiacritics                                            StripText ($A256)
  74.     UppercaseStripDiacritics                                StripUpperText ($A656)
  75.  
  76.  
  77. }
  78.  
  79. { Type for truncWhere parameter in TruncString, TruncText }
  80.  
  81. TYPE
  82.     TruncCode                            = INTEGER;
  83.  
  84. CONST
  85.                                                                 {  Constants for truncWhere argument in TruncString and TruncText  }
  86.     truncEnd                    = 0;                            {  Truncate at end  }
  87.     truncMiddle                    = $4000;                        {  Truncate in middle  }
  88.     smTruncEnd                    = 0;                            {  Truncate at end - obsolete  }
  89.     smTruncMiddle                = $4000;                        {  Truncate in middle - obsolete  }
  90.  
  91.                                                                 {  Constants for TruncString and TruncText results  }
  92.     notTruncated                = 0;                            {  No truncation was necessary  }
  93.     truncated                    = 1;                            {  Truncation performed  }
  94.     truncErr                    = -1;                            {  General error  }
  95.     smNotTruncated                = 0;                            {  No truncation was necessary - obsolete  }
  96.     smTruncated                    = 1;                            {  Truncation performed    - obsolete  }
  97.     smTruncErr                    = -1;                            {  General error - obsolete  }
  98.  
  99.  
  100. TYPE
  101.     StyledLineBreakCode                    = SInt8;
  102.  
  103. CONST
  104.     smBreakWord                    = 0;
  105.     smBreakChar                    = 1;
  106.     smBreakOverflow                = 2;
  107.  
  108.  
  109. TYPE
  110.     ScriptRunStatusPtr = ^ScriptRunStatus;
  111.     ScriptRunStatus = RECORD
  112.         script:                    SInt8;
  113.         runVariant:                SInt8;
  114.     END;
  115.  
  116.     BreakTablePtr = ^BreakTable;
  117.     BreakTable = RECORD
  118.         charTypes:                PACKED ARRAY [0..255] OF CHAR;
  119.         tripleLength:            INTEGER;
  120.         triples:                ARRAY [0..0] OF INTEGER;
  121.     END;
  122.  
  123.     NBreakTablePtr = ^NBreakTable;
  124.     NBreakTable = RECORD
  125.         flags1:                    SInt8;
  126.         flags2:                    SInt8;
  127.         version:                INTEGER;
  128.         classTableOff:            INTEGER;
  129.         auxCTableOff:            INTEGER;
  130.         backwdTableOff:            INTEGER;
  131.         forwdTableOff:            INTEGER;
  132.         doBackup:                INTEGER;
  133.         length:                    INTEGER;                                {  length of NBreakTable  }
  134.         charTypes:                PACKED ARRAY [0..255] OF CHAR;
  135.         tables:                    ARRAY [0..0] OF INTEGER;
  136.     END;
  137.  
  138. {  The following functions are new names that work on 68k and PowerPC }
  139. FUNCTION Munger(h: Handle; offset: LONGINT; ptr1: UNIV Ptr; len1: LONGINT; ptr2: UNIV Ptr; len2: LONGINT): LONGINT;
  140.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  141.     INLINE $A9E0;
  142.     {$ENDC}
  143. FUNCTION NewString(theString: Str255): StringHandle;
  144.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  145.     INLINE $A906;
  146.     {$ENDC}
  147. PROCEDURE SetString(theString: StringHandle; strNew: Str255);
  148.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  149.     INLINE $A907;
  150.     {$ENDC}
  151. FUNCTION GetString(stringID: INTEGER): StringHandle;
  152.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  153.     INLINE $A9BA;
  154.     {$ENDC}
  155. PROCEDURE GetIndString(VAR theString: Str255; strListID: INTEGER; index: INTEGER);
  156. FUNCTION StyledLineBreak(textPtr: Ptr; textLen: LONGINT; textStart: LONGINT; textEnd: LONGINT; flags: LONGINT; VAR textWidth: Fixed; VAR textOffset: LONGINT): StyledLineBreakCode;
  157.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  158.     INLINE $2F3C, $821C, $FFFE, $A8B5;
  159.     {$ENDC}
  160. FUNCTION TruncString(width: INTEGER; VAR theString: Str255; truncWhere: TruncCode): INTEGER;
  161.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  162.     INLINE $2F3C, $8208, $FFE0, $A8B5;
  163.     {$ENDC}
  164. FUNCTION TruncText(width: INTEGER; textPtr: Ptr; VAR length: INTEGER; truncWhere: TruncCode): INTEGER;
  165.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  166.     INLINE $2F3C, $820C, $FFDE, $A8B5;
  167.     {$ENDC}
  168. PROCEDURE FindWordBreaks(textPtr: Ptr; textLength: INTEGER; offset: INTEGER; leadingEdge: BOOLEAN; breaks: BreakTablePtr; VAR offsets: OffsetTable; script: ScriptCode);
  169.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  170.     INLINE $2F3C, $C012, $001A, $A8B5;
  171.     {$ENDC}
  172. PROCEDURE LowercaseText(textPtr: Ptr; len: INTEGER; script: ScriptCode);
  173.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  174.     INLINE $3F3C, $0000, $2F3C, $800A, $FFB6, $A8B5;
  175.     {$ENDC}
  176. PROCEDURE UppercaseText(textPtr: Ptr; len: INTEGER; script: ScriptCode);
  177.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  178.     INLINE $3F3C, $0400, $2F3C, $800A, $FFB6, $A8B5;
  179.     {$ENDC}
  180. PROCEDURE StripDiacritics(textPtr: Ptr; len: INTEGER; script: ScriptCode);
  181.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  182.     INLINE $3F3C, $0200, $2F3C, $800A, $FFB6, $A8B5;
  183.     {$ENDC}
  184. PROCEDURE UppercaseStripDiacritics(textPtr: Ptr; len: INTEGER; script: ScriptCode);
  185.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  186.     INLINE $3F3C, $0600, $2F3C, $800A, $FFB6, $A8B5;
  187.     {$ENDC}
  188. FUNCTION FindScriptRun(textPtr: Ptr; textLen: LONGINT; VAR lenUsed: LONGINT): ScriptRunStatus;
  189.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  190.     INLINE $2F3C, $820C, $0026, $A8B5;
  191.     {$ENDC}
  192. {
  193.       The following functions are old names, but are required for PowerPC builds
  194.       because InterfaceLib exports these names, instead of the new ones.
  195. }
  196.  
  197. PROCEDURE FindWord(textPtr: Ptr; textLength: INTEGER; offset: INTEGER; leadingEdge: BOOLEAN; breaks: BreakTablePtr; VAR offsets: OffsetTable);
  198.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  199.     INLINE $2F3C, $8012, $001A, $A8B5;
  200.     {$ENDC}
  201. PROCEDURE NFindWord(textPtr: Ptr; textLength: INTEGER; offset: INTEGER; leadingEdge: BOOLEAN; nbreaks: NBreakTablePtr; VAR offsets: OffsetTable);
  202.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  203.     INLINE $2F3C, $8012, $FFE2, $A8B5;
  204.     {$ENDC}
  205. {
  206.    On 68K machines, LwrText, LowerText, StripText, UpperText and StripUpperText
  207.    return an error code in register D0, but System 7 PowerMacs do not emulate
  208.    this properly, so checking D0 is unreliable.
  209. }
  210.  
  211. PROCEDURE LwrText(textPtr: Ptr; len: INTEGER);
  212.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  213.     INLINE $301F, $205F, $A056;
  214.     {$ENDC}
  215. PROCEDURE LowerText(textPtr: Ptr; len: INTEGER);
  216.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  217.     INLINE $301F, $205F, $A056;
  218.     {$ENDC}
  219. PROCEDURE StripText(textPtr: Ptr; len: INTEGER);
  220.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  221.     INLINE $301F, $205F, $A256;
  222.     {$ENDC}
  223. PROCEDURE UpperText(textPtr: Ptr; len: INTEGER);
  224.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  225.     INLINE $301F, $205F, $A456;
  226.     {$ENDC}
  227. PROCEDURE StripUpperText(textPtr: Ptr; len: INTEGER);
  228.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  229.     INLINE $301F, $205F, $A656;
  230.     {$ENDC}
  231.  
  232. {  The following are new names which are exported by InterfaceLib }
  233.  
  234. PROCEDURE UpperString(VAR theString: Str255; diacSensitive: BOOLEAN);
  235. {  Old routine name but no new names are mapped to it: }
  236. PROCEDURE UprText(textPtr: Ptr; len: INTEGER);
  237.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  238.     INLINE $301F, $205F, $A054;
  239.     {$ENDC}
  240. {
  241.  
  242.     Functions for converting between C and Pascal Strings
  243.     (Previously in Strings.h)
  244.     
  245. }
  246. PROCEDURE C2PStrProc(aStr: UNIV Ptr);
  247. FUNCTION C2PStr(cString: UNIV Ptr): StringPtr;
  248. PROCEDURE P2CStrProc(aStr: StringPtr);
  249. FUNCTION P2CStr(pString: StringPtr): Ptr;
  250. {$ALIGN RESET}
  251. {$POP}
  252.  
  253. {$SETC UsingIncludes := TextUtilsIncludes}
  254.  
  255. {$ENDC} {__TEXTUTILS__}
  256.  
  257. {$IFC NOT UsingIncludes}
  258.  END.
  259. {$ENDC}
  260.